package chapter3

import (
	"context"
	"github.com/gin-gonic/gin"
	"github.com/go-redis/redis/v8"
	"net/http"
)

// 修改姓名、实现计数器加一
func ChangeName() {
	var ctx = context.Background()
	// 链接redis
	rdb := redis.NewClient(&redis.Options{
		Addr:     "localhost:6379",
		Password: "", // no password set
		DB:       0,  // use default DB
	})
	// 设置计数器
	err := rdb.Set(ctx, "number", 0, 0).Err()
	if err != nil {
		panic(err)
	}
	// 初始化name
	err = rdb.Set(ctx, "name", "", 0).Err()
	if err != nil {
		panic(err)
	}
	r := gin.Default()
	r.LoadHTMLGlob("template/**/*")
	r.Static("/statics", "./statics")
	r.GET("/", func(context *gin.Context) {
		// 存
		name := context.Query("name")
		if name != "" {
			err := rdb.Set(ctx, "name", name, 0).Err()
			if err != nil {
				panic(err)
			}
		}
		// 取
		name, err := rdb.Get(ctx, "name").Result()
		if err != nil {
			name = ""
		}
		// 访问一次加一
		rdb.Incr(ctx, "number")
		// 增加指定次数
		// rdb.IncrBy(ctx, "number", 30)
		number, err := rdb.Get(ctx, "number").Result()
		// 渲染
		context.HTML(http.StatusOK, "chapter/name.html", gin.H{"name": name, "number": number})
	})
	r.Run(":80")
}
